package com.atguigu.hdfs;

import org.junit.Test;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

import java.net.URI;

public class HdfsClient {

    @Test
    public void testmkdir() throws Exception {
        // 1. 关键：JVM参数级别禁用安全管理器（解决getSubject异常）
        System.setProperty("java.security.manager", "allow");
        // 2. 强制指定Hadoop操作用户，跳过安全验证
        System.setProperty("HADOOP_USER_NAME", "root"); // 替换为你的Hadoop实际用户

        // 3. HDFS配置
        URI uri = new URI("hdfs://hadoop01:8020");
        Configuration configuration = new Configuration();
        // 4. 禁用Hadoop安全认证机制
        configuration.set("hadoop.security.authentication", "simple");
        configuration.set("hadoop.security.authorization", "false");

        // 5. 获取文件系统（此时不会触发安全主体验证）
        FileSystem fs = FileSystem.get(uri, configuration);

        // 6. 创建目录
        boolean result = fs.mkdirs(new Path("/xiyou/huaguoshan"));
        System.out.println(result ? "目录创建成功！" : "目录创建失败！");

        // 7. 关闭资源
        fs.close();
    }
}